using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NHibernate;
using NHibernate.Expression;
using Didsoft.DataAccess.NHibernate;
using Didsoft.DataAccess.Contracts;
using ICIA.ARojas.AccesoDatos.Entidades;
using ICIA.ARojas.AccesoDatos.Contratos;

namespace ICIA.ARojas.AccesoDatos.Contexto
{
   public class DestinoAccesoDatos : DataAccessBase<Destino>, IDestinoAccesoDatos
   {
     public DestinoAccesoDatos()
     {
     }
     
     /// <summary>
     /// Devuelve una lista IList<Destino> con todas las ocurrencias encontradas, en base a filtro.
     /// </summary>
     /// <param name="filtro"></param>
     /// <returns></returns>
     public IList<Destino> BuscarPorFiltro(string filtro)
     {
             ICriteria criteria = Session.CreateCriteria(typeof(Destino));
             criteria.Add(Expression.Like("NombrePropiedad", filtro+"%")); 
             return criteria.List<Destino>();
     }


     public List<Destino> BuscarPorPersonaId(int PersonaId)
     {
         var hql = "from Destino as d where d.Persona.Id = :PersonaId ";
         var query = Session.CreateQuery(hql);
         query.SetInt32("PersonaId", PersonaId);

         return query.List<Destino>().ToList();
     }


     public IList<Destino> BuscarPorGestion(int gestion)
     {
         var hql = "from Destino as d where d.Gestion = :gestion ";
         var query = Session.CreateQuery(hql);
         query.SetInt32("gestion", gestion);

         return query.List<Destino>();
     }
   }
}

